/**
 * 此js必引
 * @type {string}
 */
// 获取MainUri
const mainUri = function () {
    let pathName = document.location.pathname;
    let index = pathName.substr(1).indexOf("/");
    let result = pathName.substr(0, index + 1);
    return result;
}();

var json=window.sessionStorage.getItem("user");

if(json==null||json=="undefined"){
    window.location = mainUri+"/login.html";
}
var user = JSON.parse(json);

if(isEmpty(user)){
    cPrint("账号信息获取异常,请重新登陆")
    window.location = mainUri+"/login.html";
}

var MainIP="http://localhost:8080";

/**
 * 将数组(json)转换成String类型
 * @param data
 * @returns {string}
 */
function dataToString(data){
    let retStr=""
    for(let key in data){
        retStr+=key+"="+data[key]+"&"
    }
    return retStr.substring(0,retStr.length-1)
}

//次方法需要放在layui中才能使用
function showloading(t) {
    if (layer==undefined||layer==null){
        return
    }
    if (t) {//如果是true则显示loading
        loading = layer.load(0, {
            shade: [0.7, '#393D49'] //0.1透明度的白色背景
        });
    } else {//如果是false则关闭loading
        layer.closeAll('loading');
    }
}

/**
 * 判断一个数据是否不为空
 * @param val
 * @returns {boolean}
 */
function isNoEmpty(val){
    if(typeof val == 'boolean'){
        return true
    }
    if(typeof val=='number'){
        return true
    }
    if(val==undefined||val==null||val=="null"||val=="undefined"||val==""){
        return false
    }
    return true;
}

//根据格式获取当前时间
Date.prototype.Format = function (fmt) { // author: meizz
    var o = {
        "M+": this.getMonth() + 1, // 月份
        "d+": this.getDate(), // 日
        "h+": this.getHours(), // 小时
        "m+": this.getMinutes(), // 分
        "s+": this.getSeconds(), // 秒
        "q+": Math.floor((this.getMonth() + 3) / 3), // 季度
        "S": this.getMilliseconds() // 毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}
//获取当前时间
var nowTime = new Date().Format("yyyy-MM-dd hh:mm:ss");

/**
 * 判断一个数据是否为空
 * @param val
 * @returns {boolean}
 */
function isEmpty(val){
    return !isNoEmpty(val)
}

/**
 * 二次封装ajax请求
 * @param url
 * @param data
 * @param type
 * @param dataType
 * @param success
 * @param error
 */
function myAjaxAll(url,data,type,dataType,success,error){
    $.ajax({
        url: url,
        data: data,
        type: type,
        dataType: dataType,
        success: success,
        error: error
    });
}

/**
 * ajax post请求
 * @param url
 * @param data
 * @param success
 * @param error
 */
function myAjax(url,data={},success,error=function(){}){
    if(data==""){
        data={}
    }
    if(error==""){
        error=function(){};
    }
    myAjaxAll(url,data,"Post","json",success,error)
}

/**
 * ajax get(无参)请求
 * @param url
 * @param success
 * @param error
 */
function myAjaxGet(url,success,error=function(){}){
    if(error==""){
        error=function(){};
    }
    myAjaxAll(url,{},"Get","json",success,error)
}

//获取跳转过来的url中的参数
//name为参数名,注意name为字符
var LocString = String(window.document.location.href);
function GetQueryString(name) {
    var rs = new RegExp("(^|)" + name + "=([^&]*)(&|$)", "gi").exec(LocString), tmp;
    if (tmp = rs) {
        return decodeURI(tmp[2]);
    }
    // parameter cannot be found
    return "";
}

/**
 * 获取地址中对应key的值并且绑定在对应的组件上,或者运行相应的方法
 * @param key
 * @param successFunc
 * @returns {string}
 */
function htmlSetValue(key,successFunc){
    let value=GetQueryString(key);
    if(value==undefined||value==""||value==null||value=='null'){
        value=""
    }
    var id="#"+key
    if(successFunc==null||successFunc==undefined){
        $(id).val(value)
    }else{
        successFunc(value)
    }
    return value
}

/**
 * 从list中绑定数据到html上
 * @param id 绑定的id 或者key
 * @param data 源数据
 * @param successFunc 自定义方法
 * @returns {string}
 */
function dataSetHtml(id,data,successFunc){
    if(isEmpty(id)){
        return "";
    }
    if(isEmpty(data)){
        return "";
    }
    var val=isNoEmpty(data[id])?data[id]:""
    id="#"+id
    if(successFunc==null||successFunc==undefined){
        $(id).html(val)
    }else{
        successFunc(val)
    }
    return val
}

/**
 * 从list中绑定数据到html上
 * @param id 绑定的id 或者key
 * @param data 源数据
 * @param successFunc 自定义方法
 * @returns {string}
 */
function dataSetVal(id,data,successFunc){
    if(isEmpty(id)){
        return "";
    }
    if(isEmpty(data)){
        return "";
    }
    var val=isNoEmpty(data[id])?data[id]:""
    id="#"+id
    if(successFunc==null||successFunc==undefined){
        $(id).val(val)
    }else{
        successFunc(val)
    }
    return val
}

function getVal(idSelector) {
    return isNoEmpty(idSelector)?$("#"+idSelector).val():""
}

/**
 * 事件绑定
 * @param selector 选择器
 * @param func 方法
 * @param event 事件
 */
function clickFunc(selector,func,event=""){
    if(isNoEmpty(event)){
        $(selector).on(event,func)
    }else{
        $(selector).on('click',func);
    }
}

function cPrint(content){
    console.log(content)
}

/**
 * 判断两个数组是否相等
 * @param a
 * @param b
 * @returns {boolean}
 */
function arrayEqual(a, b) {
    m = new Map()
    a.forEach(o => m.set(o, (m.get(o)||0) + 1));
    b.forEach(o => m.set(o, (m.get(o)||0) - 1));
    for (var value of m.values()) {
        if(value !== 0){ return false}
    }
    return true
}

/**
 * 请求时同时发送当前登陆的账号id与sessionid进行校验
 * 不相同则需要重新登陆
 */
$.ajaxSetup({
    // 发送cookie
    xhrFields: {
        withCredentials: true
    },
    crossDomain: true,
    // 请求发送前
    beforeSend: function () {
        // 发送请求前，可以对data、url等处理
    },
    // 请求返回
    complete: function () {
        // 返回数据，根据数据调转页面等
    },
    headers: { // 默认添加请求头

    } ,
});

/**
 * 返回两个日期相差的天数
 * @param beginTime
 * @param endTime
 * @returns {number} 两个日期相差的天数
 */
function dateGapByDay(beginTime,endTime){
    var date1=isNoEmpty(beginTime)?new Date(beginTime):new Date();
    var date2=isNoEmpty(endTime)?new Date(endTime):new Date();
    if(date1.getTime() > date2.getTime()){
        return (date1.getTime()-date2.getTime())/(1000*60*60*24);/*不用考虑闰年否*/
    } else  if(date1.getTime() < date2.getTime()){
        return (date2.getTime()-date1.getTime())/(1000*60*60*24);/*不用考虑闰年否*/
    }else if(date1.getTime() == date2.getTime()){
        return 0
    }


}